package ${basePackage}.dao.rdb.${moduleName};

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ${table.className}DAO{

    /**
    * 插入数据 全部插入
    */
    int insert${table.className}(${table.className}DO record);
    /**
    * 插入数据 部分插入
    */
    int insert${table.className}Selective(${table.className}DO record);
    /**
    * 通过主键查询数据
    */
    ${table.className}DO select${table.className}ByPrimaryKey(<#t/>
        <#list table.primaryKeys as key>
            @Param("${key.javaProperty}") ${key.javaType} ${key.javaProperty}<#t/>
            <#if (key_index < table.primaryKeys?size-1)>,</#if><#t/>
        </#list>);
    /**
    * 通过DO中不为空的数据组合成联合条件 查询
    */
    List${r'<'}${table.className}DO${r'>'} selectBy${table.className}(${table.className}DO query);
    /**
    * 通过DO中不为空的数据组合成联合条件 查询数量
    */
    int select${table.className}Count(${table.className}DO query);
    /**
    * 更新数据 全部更新
    */
    int update${table.className}ByPrimaryKey(${table.className}DO record);
    /**
    * 更新数据 部分更新
    */
    int update${table.className}ByPrimaryKeySelective(${table.className}DO record);
    /**
    * 通过主键删除该数据 本质上是更改数据状态
    */
    int del${table.className}ByPrimaryKey(<#t/>
        <#list table.primaryKeys as key>
            @Param("${key.javaProperty}") ${key.javaType} ${key.javaProperty}<#t/>
            <#if (key_index < table.primaryKeys?size-1)>,</#if><#t/>
        </#list>);

}